package com.grep.extra.service.impl;

import com.grep.extra.factory.data.impl.Content;
import com.grep.extra.factory.data.impl.PageContent;
import com.grep.extra.factory.data.impl.SiteUrl;
import com.grep.extra.factory.data.impl.TaskContentUrl;
import com.grep.extra.factory.data.impl.TaskDataQueue;
import com.grep.extra.factory.data.impl.TaskUrl;
import com.grep.extra.factory.handle.IHandler;
import com.grep.extra.service.CollectTask;
import com.grep.extra.threadpool.ThreadPool;

public class CollectTaskImpl implements CollectTask {

	/**
	 * 发现数据库中的所有的task
	 */
	public void discoveryTaskUrl(
			IHandler<SiteUrl, TaskUrl> handler) {
		handler.init(TaskDataQueue.siteUrlQueue, TaskDataQueue.taskUrlQueue) ;
		//new ThreadPool(handler) ; 不需要多线程处理，调用一下discoveryTaskUrl方法
		//就直接执行一下，把所有的网站建一下文件夹就可以了。所以在handler的process方法中自己取task的每一条数据处理。
		//或者在此处遍历处理一下所有的website就可以了，把queue换成list
		new ThreadPool(handler) ;
		
	}
	/**
	 * 分析出来所有要采集的内容url，将内容url入库
	 */
	public void discoveryTaskContentUrl(
			IHandler<TaskUrl, TaskContentUrl> handler) {
		handler.init(TaskDataQueue.taskUrlQueue,TaskDataQueue.taskContentUrlQueue) ;
		new ThreadPool(handler) ;
	}
	/**
	 * 将内容url下载到本地
	 */
	public void discoveryPageContent(
			IHandler<TaskContentUrl, PageContent> handler) {
		handler.init(TaskDataQueue.taskContentUrlQueue, TaskDataQueue.pageContentQueue) ;
		new ThreadPool(handler) ;
	} 

	public void discoveryContent(IHandler<PageContent, Content> handler) {
		handler.init(TaskDataQueue.pageContentQueue, TaskDataQueue.contentQueue) ;
		new ThreadPool(handler) ;
	}

}
